#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define per(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'

struct Node {
  int mx;
  map<int, int> data;
};
map<char, Node> mem;

bool create(string text) {
  char c;
  int len;
  if (2 != sscanf(text.c_str(), "%c[%d]", &c, &len))
    return false;                  // parse failure
  if (mem.count(c)) return false;  // already exist
  if (len < 0) return false;       // len invalid
  mem[c].mx = len - 1;
  return true;
}
bool getvalue(string text, int& val) {
  if (text.empty()) return false;
  if (text.back() != ']') {
    return 1 == sscanf(text.c_str(), "%d", &val);
  } else {
    if (text.size() < 4) return false;
    char c = text.front();
    if (!mem.count(c)) return false;
    int idx;
    if (!getvalue(text.substr(2, text.size() - 3), idx)) return false;
    if (idx > mem[c].mx) return false;
    if (!mem[c].data.count(idx)) return false;
    val = mem[c].data[idx];
    return true;
  }
}
bool setvalue(string text, int val) {
  if (text.empty()) return false;
  if (text.back() != ']') return false;
  char c = text.front();
  if (!mem.count(c)) return false;
  int idx;
  if (!getvalue(text.substr(2, text.size() - 3), idx)) return false;
  if (idx > mem[c].mx) return false;
  mem[c].data[idx] = val;
  return true;
}
bool exe(string line) {
  int pos = line.find('=');
  if (pos == string::npos) return create(line);
  int val;
  if (!getvalue(line.substr(pos + 1), val)) return false;
  if (!setvalue(line.substr(0, pos), val)) return false;
  return true;
}
bool solve() {
  vector<string> lines;
  string line;
  while (getline(cin, line) && line != ".") {
    lines.push_back(line);
  }
  if (lines.empty()) return false;

  mem.clear();
  rep(i, 0, lines.size() - 1) {
    if (!exe(lines[i])) {
      cout << i + 1 << endl;
      return true;
    }
  }
  cout << 0 << endl;
  return true;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  while (solve());
  return 0;
}